0x46fd72: cmp    $0x2,%ebx             # compare depth to 2 half-ply
0x46fd75: jne    0x46fda1              # if equal
0x46fd77: cmp    %ebp,(0x7f4834)         # see if RML[1] is null (ebp)
0x46fd7d: je     0x46fda1                # if more than one legal move
0x46fd7f: movzbl (0x7dd2f8),%ecx           # load "easy"
0x46fd86: mov    (0x7f43c4),%eax           # load value 2nd best move
0x46fd8c: add    $0xc8,%eax                # add 200
0x46fd91: cmp    %eax,(0x7f43c0)           # compare to val best move
0x46fd97: cmovae %r14d,%ecx                # if margin is large
0x46fd9b: mov    %cl,(0x7dd2f8)              # set "easy" as true
0x46fda1: mov    %edx,(0x7dd2f0)   
0x46fdad* mov    (0x7dd2f6),%r10b      # load "change"
0x46fda7: callq  *0xfa283(%rip)        # GetTickCount
0x46fdb4: mov    %eax,%r11d            # copy TickCount to r11
0x46fdb7: sub    (0x7dd2d8),%r11d      # subtract start time -> USED
0x46fdbe: cmp    %ebp,(0x7745f0)       # if SomeTimeFlag is false
0x46fdc4: jne    0x46fde3 [0x46fdea*]
0x46fdc6: cmp    (0x7dd1b0),%r11d        # cmp TargetTime to USED
0x46fdcd: jb     0x46fdd7                # if USED is large
0x46fdcf: mov    $0x1,%r8b                 # set "flag" to true
0x46fdd2: jmpq   0x46fe99 [0x46fe92*]
0x46fdd7: mov    (0x7dd2f9),%r8b         
0x46fdde: jmpq   0x46fe99 [0x46fe92*]    # jump to BELOW
0x46fdea* movzbl (0x7dd2f5),%esi       # load "bad_2"
0x46fde3: mov    (0x7dd1b0),%r9d       # put TargetTime into r9
0x46fdf6* lea    0x0(,%r9,4),%ecx      # multiply by 4
0x46fdf1: mov    $0xcccccccd,%eax      # multiply by 4/5
0x46fdfe: mul    %ecx
0x46fe00: shr    $0x2,%edx             # divide by 4
0x46fe03: cmp    %edx,%r11d            # cmp 4/5*TargetTime to USED
0x46fe06: jb     0x46fe19              # if USED is large
0x46fe08: movzbl (0x7dd2f9),%r8d         # load "flag"
0x46fe10: test   %sil,%sil               # if bad_2 is false
0x46fe13: cmove  %r14d,%r8d                # set "flag"
0x46fe17: jmp    0x46fe20
0x46fe19: mov    (07dd2f9),%r8b        # load "flag"
0x46fe20: mov    $0xcccccccd,%eax      
0x46fe25: mul    %r9d                  # multiply TargetTime by 4/5
0x46fe28: shr    $0x2,%edx             # divide by 4
0x46fe2b: cmp    %edx,%r11d            # cmp 1/5*TargetTime to USED
0x46fe2e: jb     0x46fe3f              # if USED is large
0x46fe30: cmp    %bpl,(0x7dd2f8)         # check if "easy" is true
0x46fe37: movzbl %r8b,%r8d
0x46fe3b: cmovne %r14d,%r8d                # if so, set "flag"
0x46fe3f: mov    %r9d,%ecx
0x46fe42: mov    $0xcccccccd,%eax
0x46fe47: imul   $0x7,%ecx,%ecx        # multiply TargetTime by 7
0x46fe4a: mul    %ecx                  # then by 4/5
0x46fe4c: shr    $0x3,%edx             # and divide by 8
0x46fe4f: cmp    %edx,%r11d            # cmp 7/10*TargetTime to USED
0x46fe52: jb     0x46fe64              # if USED is large
0x46fe54: test   %sil,%sil               # test "bad2"
0x46fe57: jne    0x46fe64                # if false
0x46fe59: movzbl %r8b,%r8d
0x46fe5d: test   %r10b,%r10b               # test "change"
0x46fe60: cmove  %r14d,%r8d                # if false then set "flag"
0x46fe64: lea    (%r9,%r9,2),%ecx      # multiply TargetTime by 3
0x46fe6d* add    %ecx,%ecx             # then by 2
0x46fe68: mov    $0xcccccccd,%eax      # then by 4/5
0x46fe6f: mul    %ecx
0x46fe71: shr    $0x3,%edx             # then divide by 8
0x46fe74: cmp    %edx,%r11d            # cmp 3/5*TargetTime to USED
0x46fe77: jb     0x46fe92              # if USED is large
0x46fe79: test   %sil,%sil               # test "bad2"
0x46fe7c: jne    0x46fe92                # if true
0x46fe7e: test   %r10b,%r10b               # test "change"
0x46fe81: jne    0x46fe92                  # if true
0x46fe83: cmp    %bpl,(0x7dd2f7)             # test another condition
0x46fe8a: movzbl %r8b,%r8d
0x46fe8e: cmove  %r14d,%r8d                    # if false, set "flag"
0x46fe99: movzbl (0x7dd1cd),%edx BELOW # load Ponder (?)
0x46fea0: movzbl (0x7dd1cc),%ecx       # load Infinite
0x46fea7: movzbl %r8b,%eax             # transfer "flag" to eax
0x46feab: mov    (0x7dd314),%r8d       # load score
0x46fe92* cmp    (0x7dd1b4),%r11d      # if time >= AbsoluteTime
0x46feb2: cmovae %r14d,%eax              # set "flag"
0x46febd: mov    %al,(0x7dd2f9)        # store "flag"
0x46feb6: cmp    $0xffff86e8,%r8d      # if score <= -MATE 
0x46fec3: jle    0x46fece              
0x46fec5: cmp    $0x7918,%r8d          # or score >= MATE
0x46fecc: jl     0x46fedb
0x46fece: test   %cl,%cl                 # and (!Infinite
0x46fed0: je     0x46fed6
0x46fed2: test   %dl,%dl                 #       or Ponder)
0x46fed4: je     0x46fedb
0x46fed6: cmp    $0xc,%ebx               # and dp >= 12 half-ply
0x46fed9: jge    0x46ff28                  # then break
0x46fedb: cmp    $0xffff86e8,%r8d      # if score <= -MATE
0x46fee2: jg     0x46fef9
0x46fee4: cmp    $0xc,%ebx             # and dp >= 12 half-play
0x46fee7: jl     0x46fef9
0x46fee9: test   %cl,%cl                 # and (!Infinite
0x46feeb: je     0x46fef1                
0x46feed: test   %dl,%dl                 #      or Ponder)
0x46feef: je     0x46fef9
0x46fef1: mov    $0x1,%al
0x46fef3: mov    %al,(0x7dd2f9)            # set "flag"
0x46fef9: cmp    %bpl,(0x7dd2d0)       # if "stop" is true
0x46ff00: jne    0x46ff28                # then break 
0x46ff02: test   %al,%al               # if "flag"
0x46ff04: je     0x46ff0a
0x46ff06: test   %cl,%cl               # and !Infinite
0x46ff08: je     0x46ff28                # then break
0x46ff0a: add    $0x2,%ebx             # inc depth by 2 half-ply
0x46ff1d: cmp    $0x7e,%ebx            # if less than 126
0x46ff20: jb     0x46fb40                # then loop